/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package lista5_Num2_ClinicaNutricao;

import model.Paciente;
import model.ResultadoAvaliacao;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.StringTokenizer;

/**
 *
 * @author Kdc
 */
public class Rcq extends CalculosNutricionais{
    
    private double rcq;

    @Override
    public void calcula(Paciente p) {
        
        this.rcq = p.getMedidaCintura() / p.getMedidaQuadril();
        
    }

    @Override
    public void classifica(Paciente p) {
        
        String classificacao = "INDISPONIVEL";
        int idade = calculaIdade(p.getDataNascimento());

        if (p.getSexo() == 'M') 
        {
           if(idade <= 29)
           {
               if(rcq < 0.83)
               {
                   classificacao = "Baixo";
               }
               else if(rcq >= 0.83 && rcq <= 0.88)
               {
                   classificacao = "Moderado";
               }
               else if(rcq >= 0.89 && rcq <= 0.94)
               {
                   classificacao = "Alto";
               }
               else if(rcq > 0.94)
               {
                   classificacao = "Muito Alto";
               }
           }
           else if(idade >= 30 && idade <= 39)
           {
               if(rcq < 0.84)
               {
                   classificacao = "Baixo";
               }
               else if(rcq >= 0.84 && rcq <= 0.91)
               {
                   classificacao = "Moderado";
               }
               else if(rcq >= 0.92 && rcq <= 0.96)
               {
                   classificacao = "Alto";
               }
               else if(rcq > 0.96)
               {
                   classificacao = "Muito Alto";
               }
           }
           else if(idade >= 40 && idade <= 49)
           {
               if(rcq < 0.88)
               {
                   classificacao = "Baixo";
               }
               else if(rcq >= 0.88 && rcq <= 0.95)
               {
                   classificacao = "Moderado";
               }
               else if(rcq >= 0.96 && rcq <= 1.00)
               {
                   classificacao = "Alto";
               }
               else if(rcq > 1.00)
               {
                   classificacao = "Muito Alto";
               }
           }
           else if(idade >= 50 && idade <= 59)
           {
               if(rcq < 0.9)
               {
                   classificacao = "Baixo";
               }
               else if(rcq >= 0.9 && rcq <= 0.96)
               {
                   classificacao = "Moderado";
               }
               else if(rcq >= 0.97 && rcq <= 1.02)
               {
                   classificacao = "Alto";
               }
               else if(rcq > 1.02)
               {
                   classificacao = "Muito Alto";
               }
           }
           else if(idade > 59)
           {
               if(rcq < 0.91)
               {
                   classificacao = "Baixo";
               }
               else if(rcq >= 0.91 && rcq <= 0.98)
               {
                   classificacao = "Moderado";
               }
               else if(rcq >= 0.99 && rcq <= 1.03)
               {
                   classificacao = "Alto";
               }
               else if(rcq > 1.03)
               {
                   classificacao = "Muito Alto";
               }
           }
            
        }
        //para o sexo feminino
        else 
        {
            if(idade <= 29)
           {
               if(rcq < 0.71)
               {
                   classificacao = "Baixo";
               }
               else if(rcq >= 0.71 && rcq <= 0.77)
               {
                   classificacao = "Moderado";
               }
               else if(rcq >= 0.78 && rcq <= 0.82)
               {
                   classificacao = "Alto";
               }
               else if(rcq > 0.82)
               {
                   classificacao = "Muito Alto";
               }
           }
           else if(idade >= 30 && idade <= 39)
           {
               if(rcq < 0.72)
               {
                   classificacao = "Baixo";
               }
               else if(rcq >= 0.72 && rcq <= 0.78)
               {
                   classificacao = "Moderado";
               }
               else if(rcq >= 0.79 && rcq <= 0.84)
               {
                   classificacao = "Alto";
               }
               else if(rcq > 0.84)
               {
                   classificacao = "Muito Alto";
               }
           }
           else if(idade >= 40 && idade <= 49)
           {
               if(rcq < 0.73)
               {
                   classificacao = "Baixo";
               }
               else if(rcq >= 0.73 && rcq <= 0.79)
               {
                   classificacao = "Moderado";
               }
               else if(rcq >= 0.80 && rcq <= 0.87)
               {
                   classificacao = "Alto";
               }
               else if(rcq > 0.87)
               {
                   classificacao = "Muito Alto";
               }
           }
           else if(idade >= 50 && idade <= 59)
           {
               if(rcq < 0.74)
               {
                   classificacao = "Baixo";
               }
               else if(rcq >= 0.74 && rcq <= 0.81)
               {
                   classificacao = "Moderado";
               }
               else if(rcq >= 0.82 && rcq <= 0.88)
               {
                   classificacao = "Alto";
               }
               else if(rcq > 0.88)
               {
                   classificacao = "Muito Alto";
               }
           }
           else if(idade > 59)
           {
               if(rcq < 0.76)
               {
                   classificacao = "Baixo";
               }
               else if(rcq >= 0.76 && rcq <= 0.83)
               {
                   classificacao = "Moderado";
               }
               else if(rcq >= 0.84 && rcq <= 0.90)
               {
                   classificacao = "Alto";
               }
               else if(rcq > 0.90)
               {
                   classificacao = "Muito Alto";
               }
           }

        }

        p.addResultado(new ResultadoAvaliacao(this.rcq, classificacao, "RCQ"));
        
    }
    
        private int calculaIdade(String pDataNascimento){

        int idade;
        int month1, month2, day1, day2, year1, year2;
        
        Date dataAt = new Date(System.currentTimeMillis());
        SimpleDateFormat fd = new SimpleDateFormat("dd/MM/yyyy");
       
        String dataAtual = String.valueOf(fd.format(dataAt));
        
        StringTokenizer atual, nascimento;

        atual = new StringTokenizer(dataAtual, "/");
        nascimento = new StringTokenizer(pDataNascimento, "/");
        
        //Pegando DIA, MES, ANO da data Atual
        day1 = Integer.parseInt(atual.nextToken());
        month1 = Integer.parseInt(atual.nextToken());
        year1 = Integer.parseInt(atual.nextToken());
        
        
        //Pegando DIA, MES, ANO da data de Aniversario
        day2 = Integer.parseInt(nascimento.nextToken());
        month2 = Integer.parseInt(nascimento.nextToken());
        year2 = Integer.parseInt(nascimento.nextToken());
        
        idade = year1 - year2;
        
        if ((month1 < month2) || ((month1 == month2) && (day1 < day2))) 
        {
            idade -= 1;
        }
        
        return idade;

    }
    
    
    
}
